/**
 * 
 */
package br.ufal.ic.sd.mom.moduloreplicador;

import java.util.ArrayList;
import java.util.List;

import br.ufal.ic.sd.mom.core.Canal;
import br.ufal.ic.sd.mom.factory.ReplicadorFactory;
import br.ufal.ic.sd.mom.singleton.Controlador;
import br.ufal.ic.sd.mom.thread.Replicador;


/**
 * @author keven lennisk almeida andrade
 *
 */
public class ModuloReplicador extends Thread{

	private static List<Canal> listaReplicadoresPendentes = new ArrayList<Canal>();
	private Controlador controlador;
	
	public void configurar(){
		System.out.println("Modulo Replicador Iniciado");
		controlador = Controlador.getInstance();
	}
	
	@SuppressWarnings("static-access")
	@Override
	public void run() {
		
		while(true){
			if(!listaReplicadoresPendentes.isEmpty()){
				Replicador replicador = ReplicadorFactory.criarNovoReplicador(listaReplicadoresPendentes.get(0));
				replicador.start();
				controlador.adiconarReplicador(replicador);
				listaReplicadoresPendentes.remove(0);
			}
		}
	}
	
	public static void adicionarReplicadorFila(Canal canal){
		listaReplicadoresPendentes.add(canal);
	}
}
